package org.codeart.composite.example01;

import java.util.ArrayList;
import java.util.List;

/**
 * 树枝节点
 */
public class Composite extends Component {

    // 定义集合属性，保存子节点数据
    private final List<Component> list = new ArrayList<>();

    @Override
    public void add(Component node) {
        list.add(node);
    }

    @Override
    public void remove(Component node) {
        list.remove(node);
    }

    @Override
    public Component getChild(int i) {
        return list.get(i);
    }

    /**
     * 在循环中递归调用其他节点的operation方法
     */
    @Override
    public void operation() {
        for (Component c : list) {
            c.operation();
        }
    }
}
